import request from '../request'

/**
 * 获取出租管理列表
 * @param {Object} params 查询参数
 * @param {string} [params.app_id] - 应用ID
 * @param {string} [params.keyword] - 商品名称，支持like查询
 * @param {string} [params.start_date] - 开始日期：YYYY-MM-DD
 * @param {string} [params.end_date] - 结束日期：YYYY-MM-DD
 * @param {string} [params.leasing_status] - 转租状态：0=待出租(表示在库存中),1=匹配中(表示该设备可以出租),2=出租中,3=退机(已归还设备),4=半路退机(已出租过n个月),5=已完结(转租结束，已获取全部收益)
 * @param {number} [params.page=1] - 页码
 * @param {number} [params.list_rows=15] - 每页条数，默认15条
 * @param {string} [params.token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function getRentalList(params = {}) {
    // 设置默认值
    const defaultParams = {
        page: 1,
        list_rows: 15
    }

    // 合并参数
    const requestParams = {
        ...defaultParams,
        ...params,
        list_rows: params.pageSize
    }

    return request.get('trusteeship.leasing/list', requestParams)
}

/**
 * 获取出租管理详情
 * @param {number} id - 出租记录ID
 * @param {string} [token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function getRentalDetail(id, token) {
    const params = {id}
    if (token) {
        params.token = token
    }

    return request.get('trusteeship.leasing/detail', params)
}

/**
 * 获取我的库存列表
 * GET trusteeship.leasing/inventory
 * @param {Object} params 查询参数
 * @param {string} [params.keyword] - 商品名称，支持like查询
 * @param {string} [params.start_date] - 开始日期：YYYY-MM-DD
 * @param {string} [params.end_date] - 结束日期：YYYY-MM-DD
 * @param {string} [params.leasing_status] - 转租状态：0=待出租(表示在库存中),1=匹配中(表示该设备可以出租),2=出租中,3=退机(已归还设备),4=半路退机(已出租过n个月),5=已完结(转租结束，已获取全部收益)
 * @param {number} [params.page=1] - 页码
 * @param {number} [params.list_rows=15] - 每页条数
 * @param {string} [params.token] - 用户token
 * @returns {Promise<{list: {total:number, per_page:number, current_page:number, last_page:number, data:Array}}>} 返回Promise对象
 */
export function getInventoryList(params = {}) {
    // 设置默认值
    const defaultParams = {
        page: 1,
        list_rows: 15
    }

    // 合并参数
    const requestParams = {
        ...defaultParams,
        ...params
    }

    return request.get('trusteeship.leasing/inventory', requestParams);
}

/**
 * 转让出租设备
 * @param {string|Array<number>} ids - 出租管理ID，可以是逗号分隔的字符串或数组
 * @param {string} [token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function transferLeasing(ids, token) {
    // 处理数组类型的ids
    const idsParam = Array.isArray(ids) ? ids.join(',') : ids;

    return request.post('trusteeship.leasing/transfer', {ids:idsParam});
}

/**
 * 再次委托出租设备
 * POST trusteeship.leasing/entrust
 * @param {string|Array<number>} ids - 出租管理ID，可以是逗号分隔的字符串或数组
 * @param {string} [token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function reEntrustLeasing(ids, token) {
    const params = {}

    // 处理ids参数，支持数组或逗号分隔的字符串
    if (Array.isArray(ids)) {
        params.ids = ids.join(',')
    } else {
        params.ids = String(ids)
    }

    if (token) {
        params.token = token
    }

    return request.post('trusteeship.leasing/entrust', params)
}

/**
 * 退机
 * POST trusteeship.leasing/returnDevice
 * @param {string|number} id - 出租管理ID
 * @param {string} [token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function returnDevice(id, token) {
    const params = { id: String(id) };

    if (token) {
        params.token = token;
    }

    return request.post('trusteeship.leasing/returnDevice', params);
}

export default {
    getRentalList,
    getRentalDetail,
    getInventoryList,
    reEntrustLeasing,
    transferLeasing,
    returnDevice
}
